package com.ruoyi.business.domain.vo.admin;


import com.alibaba.excel.annotation.ExcelProperty;
import com.ruoyi.business.domain.vo.FreightPaymentVoucherVo;
import com.ruoyi.business.domain.vo.FreightReceiptVo;
import com.ruoyi.business.domain.vo.FreightVehicleTrailVo;
import com.ruoyi.common.annotation.ExcelDictFormat;
import com.ruoyi.common.annotation.Translation;
import com.ruoyi.common.constant.TransConstant;
import com.ruoyi.common.convert.ExcelDictConvert;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 运单新增查询对象
 *
 * @author 99
 * @date 2024-04-21
 */

@Data
public class AdminWaybillQueryVo {


    /**
     * 运单id
     */
    @ExcelProperty(value = "运单id")
    private Long freightId;

    /**
     * 运单id
     */
    @ExcelProperty(value = "运单id")
    private Long orderId;

    /**
     * 订单号(冗余)
     */
    @ExcelProperty(value = "订单号(冗余)")
    private String orderNo;

    /**
     * 是否紧急
     */
    @ExcelProperty(value = "是否紧急")
    private String isUrgency;

    /**
     * 是否异常
     */
    @ExcelProperty(value = "是否异常")
    private String isAbnormal;

    /**
     * 紧急备注
     */
    @ExcelProperty(value = "紧急备注")
    private String urgencyRemark;

    /**
     * 异常备注
     */
    @ExcelProperty(value = "异常备注")
    private String abnormalRemark;

    /**
     * 账号id(当前运单)
     */
    @ExcelProperty(value = "账号id(当前运单)")
    private Long relevanceUserId;

    /**
     * 司机名称
     */
    @ExcelProperty(value = "司机名称")
    private String driverName;

    /**
     * 司机电话
     */
    @ExcelProperty(value = "司机电话")
    private String driverTel;

    /**
     * 司机类型(直营|专线|众包)
     */
    @ExcelProperty(value = "司机类型(直营|专线|众包)")
    private String driverType;

    /**
     * 运单金额
     */
    @ExcelProperty(value = "运单金额")
    private BigDecimal freightAmount;

    /**
     * 运单类型(零担|整车)
     */
    @ExcelProperty(value = "运单类型(零担|整车)")
    private String freightType;

    /**
     * 运单状态(初始化|待提货|配送中|待回单|待打款|已完成)
     */
    @ExcelProperty(value = "运单状态(初始化|待提货|配送中|待回单|待打款|已完成)")
    private String freightStatus;

    /**
     * 备注
     */
    @ExcelProperty(value = "备注")
    private String remark;

    /**
     * 删除标志（0代表存在 1代表删除）
     */
    @ExcelProperty(value = "删除标志", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "0=代表存在,1=代表删除")
    private Integer isDeleted;

    /**
     * 提货车辆照(03正面)
     */
    @ExcelProperty(value = "提货车辆照(03正面)")
    private String loadingDriverUrl03;

    /**
     * 提货车辆照(04侧面)
     */
    @ExcelProperty(value = "提货车辆照(04侧面)")
    private String loadingDriverUrl04;

    /**
     * 提货车辆照(05后面)
     */
    @ExcelProperty(value = "提货车辆照(05后面)")
    private String loadingDriverUrl05;

    /**
     * 提货重量(t)
     */
    @ExcelProperty(value = "提货重量(t)")
    private Long loadingWeight;

    /**
     * 卸货车辆照(03正面)
     */
    @ExcelProperty(value = "卸货车辆照(03正面)")
    private String receivingDriverUrl03;

    /**
     * 卸货车辆照(04侧面)
     */
    @ExcelProperty(value = "卸货车辆照(04侧面)")
    private String receivingDriverUrl04;

    /**
     * 卸货车辆照(05后面)
     */
    @ExcelProperty(value = "卸货车辆照(05后面)")
    private String receivingDriverUrl05;

    /**
     * 实际装货时间
     */
    @ExcelProperty(value = "实际装货时间")
    private Date loadingTimeDay;

    /**
     * 实际到货时间
     */
    @ExcelProperty(value = "实际到货时间")
    private Date receivingTimeDay;

    /**
     * 车牌号
     */
    @ExcelProperty(value = "车牌号")
    private String driverCarNumber;

    /**
     * 二级中转地址
     */
    @ExcelProperty(value = "二级中转地址")
    private String secondLevelAddress;

    /**
     * 二级中转经度
     */
    @ExcelProperty(value = "二级中转经度")
    private String secondLevelLongitude;

    /**
     * 二级中转纬度
     */
    @ExcelProperty(value = "二级中转纬度")
    private String secondLevelLatitude;

    /**
     * 二级中转联系人
     */
    @ExcelProperty(value = "二级中转联系人")
    private String secondLevelLinkman;

    /**
     * 二级中转联系电话
     */
    @ExcelProperty(value = "二级中转联系电话")
    private String secondLevelTel;

    /**
     * 单号
     */
    @ExcelProperty(value = "单号")
    private String code;

    /**
     * 货物数量(分担多少)
     */
    @ExcelProperty(value = "货物数量(分担多少)")
    private Long goodsNumSum;

    /**
     * 货物数量单位
     */
    @ExcelProperty(value = "货物数量单位")
    private String goodsNumUnit;

    /**
     * 货物重量(吨)(分担多少)
     */
    @ExcelProperty(value = "货物重量(吨)(分担多少)")
    private BigDecimal goodsWeightSum;

    /**
     * 订单中货物重量
     */
    @ExcelProperty(value = "订单中货物重量")
    private BigDecimal orderGoodsWeightSum;

    /**
     * 货物体积(分担多少)
     */
    @ExcelProperty(value = "货物体积(分担多少)")
    private BigDecimal goodsVolumeSum;

    /**
     * 货物体积
     */
    @ExcelProperty(value = "货物体积")
    private BigDecimal orderGoodsVolumeSum;

    /**
     * 订单状态(初始化|待提货|配送中|待回单|待打款|已完成)，全部运单切换到对应状态订单才切换到对应状态
     */
    @ExcelProperty(value = "订单状态(初始化|待提货|配送中|待回单|待打款|已完成)，全部运单切换到对应状态订单才切换到对应状态")
    private String orderStatus;

    /**
     * 显示状态，如已发货中的部分发货，为空则使用订单状态
     */
    @ExcelProperty(value = "显示状态，如已发货中的部分发货，为空则使用订单状态")
    private String displayStatus;

    /**
     * 订单总价
     */
    @ExcelProperty(value = "订单总价")
    private BigDecimal orderTotalPrices;

    /**
     * 货物名称
     */
    @ExcelProperty(value = "货物名称")
    private String goodsName;

    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, other = "goods_type", mapper = "goodsName")
    private String goodsNameLabel;

    /**
     * 用车类型(整车、零担)
     */
    @ExcelProperty(value = "用车类型(整车、零担)")
    private String carUseType;

    /**
     * 车长
     */
    @ExcelProperty(value = "车长")
    private Long carLength;

    /**
     * 车型(;分割)
     */
    @ExcelProperty(value = "车型(;分割)")
    private String carType;

    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, other = "car_type", mapper = "carType")
    private Long carTypeLabel;

    /**
     * 订单支付渠道
     */
    @ExcelProperty(value = "订单支付渠道")
    private String payChannel;

    /**
     * 订单支付单号,第三方支付流水号(transaction_id)
     */
    @ExcelProperty(value = "订单支付单号,第三方支付流水号(transaction_id)")
    private String outTradeNo;

    /**
     * 结算方式(现付、到付、月结)
     */
    @ExcelProperty(value = "结算方式(现付、到付、月结)")
    private String settlementType;

    /**
     * 保险金额(0.00未购买)(付多少)
     */
    @ExcelProperty(value = "保险金额(0.00未购买)(付多少)")
    private BigDecimal insuredAmount;

    /**
     * 保价金额(赔多少)
     */
    @ExcelProperty(value = "保价金额(赔多少)")
    private BigDecimal declarationValue;

    /**
     * 寄件人id
     */
    @ExcelProperty(value = "寄件人id")
    private Long sendId;

    /**
     * 寄件人姓名(冗余)
     */
    @ExcelProperty(value = "寄件人姓名(冗余)")
    private String sendName;

    /**
     * 寄件人手机号
     */
    @ExcelProperty(value = "寄件人手机号")
    private String sendPhone;

    /**
     * 寄件人公司
     */
    @ExcelProperty(value = "寄件人公司")
    private String sendCompanyName;

    /**
     * 寄件人省
     */
    @ExcelProperty(value = "寄件人省")
    private Long sendProvince;

    @Translation(type = TransConstant.AREA_ID_TO_NAME, mapper = "sendProvince")
    private Long sendProvinceLabel;

    /**
     * 寄件人市
     */
    @ExcelProperty(value = "寄件人市")
    private Long sendCity;

    @Translation(type = TransConstant.AREA_ID_TO_NAME, mapper = "sendCity")
    private String sendCityLabel;

    /**
     * 寄件人区
     */
    @ExcelProperty(value = "寄件人区")
    private Long sendDistrict;

    @Translation(type = TransConstant.AREA_ID_TO_NAME, mapper = "sendDistrict")
    private String sendDistrictLabel;

    /**
     * 寄件人地址
     */
    @ExcelProperty(value = "寄件人地址")
    private String sendAddress;

    /**
     * 寄件人经度
     */
    @ExcelProperty(value = "寄件人经度")
    private String sendLongitude;

    /**
     * 寄件人纬度
     */
    @ExcelProperty(value = "寄件人纬度")
    private String sendLatitude;

    /**
     * 收件人id
     */
    @ExcelProperty(value = "收件人id")
    private Long receiverId;

    /**
     * 收件人姓名(冗余)
     */
    @ExcelProperty(value = "收件人姓名(冗余)")
    private String receiverName;

    /**
     * 收件人手机号
     */
    @ExcelProperty(value = "收件人手机号")
    private String receiverPhone;

    /**
     * 收件人公司
     */
    @ExcelProperty(value = "收件人公司")
    private String receiverCompanyName;

    /**
     * 收件人省
     */
    @ExcelProperty(value = "收件人省")
    private Long receiverProvince;

    @Translation(type = TransConstant.AREA_ID_TO_NAME, mapper = "receiverProvince")
    private String receiverProvinceLabel;

    /**
     * 收件人市
     */
    @ExcelProperty(value = "收件人市")
    private Long receiverCity;

    @Translation(type = TransConstant.AREA_ID_TO_NAME, mapper = "receiverCity")
    private String receiverCityLabel;

    /**
     * 收件人区
     */
    @ExcelProperty(value = "收件人区")
    private Long receiverDistrict;

    @Translation(type = TransConstant.AREA_ID_TO_NAME, mapper = "receiverDistrict")
    private String receiverDistrictLabel;

    /**
     * 收件人地址
     */
    @ExcelProperty(value = "收件人地址")
    private String receiverAddress;

    /**
     * 收件人经度
     */
    @ExcelProperty(value = "收件人经度")
    private String receiverLongitude;

    /**
     * 收件人纬度
     */
    @ExcelProperty(value = "收件人纬度")
    private String receiverLatitude;

    /**
     * 长(米)
     */
    @ExcelProperty(value = "长(米)")
    private BigDecimal goodsLong;

    /**
     * 宽(米)
     */
    @ExcelProperty(value = "宽(米)")
    private BigDecimal goodsWidth;

    /**
     * 高(米)
     */
    @ExcelProperty(value = "高(米)")
    private BigDecimal goodsHeight;

    /**
     * 剩余可开票金额
     */
    @ExcelProperty(value = "剩余可开票金额")
    private BigDecimal remainingInvoiceAmount;

    /**
     * 打包方式
     */
    @ExcelProperty(value = "打包方式")
    private String packaging;

    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, other = "packing_method", mapper = "packaging")
    private String packagingLabel;


    /**
     * 预计装货时间(yyyy-mm-dd)
     */
    @ExcelProperty(value = "预计装货时间(yyyy-mm-dd)")
    private String loadTimeDay;

    /**
     * 预计装货时间(hh:mm-hh:mm)
     */
    @ExcelProperty(value = "预计装货时间(hh:mm-hh:mm)")
    private String loadTimeHour;

    /**
     * 预计发货时间(mm-dd)
     */
    @ExcelProperty(value = "预计发货时间(mm-dd)")
    private String sendTimeDay;

    /**
     * 预计发货时间(hh:mm-hh:mm)
     */
    @ExcelProperty(value = "预计发货时间(hh:mm-hh:mm)")
    private String sendTimeHour;

    /**
     * 预计到货时间(yyyy-mm-dd)
     */
    @ExcelProperty(value = "预计到货时间(yyyy-mm-dd)")
    private String receiveTimeDay;

    /**
     * 预计到货时间(hh:mm-hh:mm)
     */
    @ExcelProperty(value = "预计到货时间(hh:mm-hh:mm)")
    private String receiveTimeHour;

    /**
     * 是否运营方添加
     */
    @ExcelProperty(value = "是否运营方添加")
    private String isOperationAdd;

    /**
     * 卸货货物照1
     */
    @ExcelProperty(value = "卸货货物照")
    private String receivingGoodsUrl01;
    /**
     * 卸货货物照2
     */
    @ExcelProperty(value = "卸货货物照")
    private String receivingGoodsUrl02;

    /**
     * 卸货货物照3
     */
    @ExcelProperty(value = "卸货货物照")
    private String receivingGoodsUrl03;


    /**
     * 司机车牌号
     */
    @ExcelProperty(value = "司机车牌号")
    private String licencePlateNumber;

    /**
     * 打款信息
     */
    @ExcelProperty(value = "打款信息")
    private FreightPaymentVoucherVo freightPaymentVoucherVo;

    /**
     * 最新定位
     */
    @ExcelProperty(value = "最新定位")
    private FreightVehicleTrailVo latestPosition;

    /**
     * 回单信息
     */
    private FreightReceiptVo freightReceiptVo;
}
